import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

public class Test {
    public static void main(String[] args) {
        //Deque是Java集合框架中的一个接口，代表双端队列。双端队列支持从两端添加和移除元素
        Deque<Integer> stack = new ArrayDeque<>();
        stack.push(1);
        MyQueue myQueue = new MyQueue();
        myQueue.offer(1);
        myQueue.offer(2);
        myQueue.offer(3);
        myQueue.offer(4);
        myQueue.offer(5);
        System.out.println(myQueue.poll());//1
        System.out.println(myQueue.poll());//2
        System.out.println(myQueue.poll());//3
        System.out.println(myQueue.poll());//4
        System.out.println(myQueue.poll());//5
        System.out.println(myQueue.poll());//-1




    }
    public static void main2(String[] args) {
        Deque<Integer> queue2 = new LinkedList<>();

        Deque<Integer> queue1 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1.poll());
        System.out.println(queue1.peek());

    }
    public static void main1(String[] args) {
        //Stack<Integer>：Stack是Java集合框架中的一个类，它继承自Vector类，
        // 并实现了List、Deque（双端队列）和Cloneable接口。
        // 但需要注意的是，尽管Stack实现了Deque接口，但它并不完全遵循Deque的约定，
        // 特别是关于在两端添加和移除元素的方面。
        Stack<Integer> stack= new Stack<>();
        stack.push(12);
        stack.push(23);
        stack.push(34);
        Integer x = stack.pop();//由于x被声明为Integer类型，这表明栈中存储的是对象（在这里是Integer对象），而不是原始数据类型int。
                               // Integer是int的包装类，用于在需要对象而不是原始数据类型的场合。
        System.out.println(x);
        int ret = stack.peek();
        System.out.println(ret);

        ret = stack.peek();
        System.out.println(ret);
        System.out.println(stack.size());


    }
}
